//时间YYYY.MM.DD
export const getTimeYMD = (date: Date) => {
    const d = new Date(date);
    const Y = d.getFullYear();
    let M = d.getMonth() + 1;
    let D = d.getDate();

    // 月份补零
    M = M < 10 ? Number(`0${M}`) : M;
    // 日期补零
    D = D < 10 ? Number(`0${D}`) : D;

    return `${Y}-${M}-${D}`;
};

//时间YYYY.MM.DD HH:mm:ss
export const getTimeYMDHMS = (date: Date) => {
    const d = new Date(date);
    const Y = d.getFullYear();
    let M = d.getMonth() + 1;
    let D = d.getDate();
    let h = d.getHours();
    let m = d.getMinutes();

    // 月份补零
    M = M < 10? Number(`0${M}`) : M;
    // 日期补零
    D = D < 10? Number(`0${D}`) : D;
    // 补零处理小时和分钟
    const hour = h < 10? `0${h}` : h;
    const minute = m < 10? `0${m}` : m;
    const second = m < 10? `0${m}` : m;

    return `${Y}-${M}-${D} ${hour}:${minute}:${second}`;
}

//详细时间
export const getTime = (date: Date) => {
    const d = new Date(date);
    const n = new Date();
    // 获取时间戳
    const dd = d.getTime();
    const h = d.getHours();
    const m = d.getMinutes();
    const Y = d.getFullYear();
    let M = d.getMonth() + 1;
    let D = d.getDate();
    // 月份补零
    M = M < 10 ? Number(`0${M}`) : M;
    // 日期补零
    D = D < 10 ? Number(`0${D}`) : D;
    // 现在的时间
    const now = n.getTime();
    const timeDiff = now - dd; // 计算时间差（毫秒）

    // 判断是否为刚刚
    if (timeDiff < 60 * 1000) {
        return '刚刚';
    }
    // 判断是否为 xx 分钟前（1小时内）
    if (timeDiff < 60 * 60 * 1000) {
        const minutes = Math.floor(timeDiff / (60 * 1000));
        return `${minutes}分钟前`;
    }
    // 判断是否为 xx 小时前（24小时内）
    const oneDayMs = 24 * 60 * 60 * 1000;
    if (timeDiff < oneDayMs) {
        const hours = Math.floor(timeDiff / (60 * 60 * 1000));
        return `${hours}小时前`;
    }
   // 判断是否为昨天
    if (timeDiff < 2 * oneDayMs) {
        // 补零处理小时和分钟
        const hour = h < 10 ? `0${h}` : h;
        const minute = m < 10 ? `0${m}` : m;
        return `昨天 ${hour}:${minute}`;
    }

    // 判断是否为一周内
    if (timeDiff < 7 * oneDayMs) {
        const days = Math.floor(timeDiff / oneDayMs);
        return `${days}天前`;
    }

    // 补零处理小时和分钟

    // 时间差大于7天，返回年月日
    return `${Y}-${M}-${D}`;
};
